The Advanced Configuration and Power Interface (ACPI) specification is a computer architecture-related standard developed to establish industry common interfaces for enabling robust operating system (OS)-directed motherboard device configuration and power management of both devices and entire platforms. The ACPI specification evolves the existing collection of power management BIOS code, Advanced Power Management (APM) Application Program Interfaces (APIs), Plug and Play Basic Input/Output System (PNPBIOS) APIs, and Multiprocessor Specification (MPS) tables, into a well-defined, integrated power management and configuration interface specification. From a manufacturing and implementation perspective, the ACPI specification enables different computer platforms to implement common motherboard configuration and power management functions. From a power management perspective, it promotes the concept that platforms should conserve energy by transitioning unused devices into lower power states. For example, computer platforms employing ACPI-compatible implementations are able to optimize processor clock speed, control motherboard and peripheral device power consumption, and place an entire computer platform into a low-power or sleeping state.
Centralizing power management and related directives in the OS has made it practical and compelling for operating software to support and exploit ACPI-defined interfaces. To implement ACPI-defined interfaces and take advantage of the functionality offered by them, operating software, such as user applications, is provided with global knowledge of, and unrestricted access to, what are known as control method objects. These control method objects interrogate and adjust system-level hardware states to enable the initiating software, whether OS or other operating software, to perform useful tasks ranging from reading a temperature to installing a new device.
The existing ACPI architecture, however, is not without limitations. For instance, providing user applications with global knowledge of control method objects and unrestricted access thereto can affect the safety, stability, and security of the computer platform. Some control method objects modify configuration registers or cause General Purpose Events (GPEs) which affect generic features of the computer platform, including value-added hardware. User applications, however do not have a system-wide awareness of which control method objects are being changed or executed by which components of the computer system. Accordingly, user applications may inadvertently invoke control method objects that cause firmware changes that the kernel cannot handle, corrupt data, or crash the entire system. Furthermore, frequent accesses to the kernel's ACPI namespace by a user application may negatively impact the performance of a computer system.